-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Parallelize cucumber tests using GitHub Actions matrix #7319
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
f918c35 to
7702559
Compare
|
Hi @DennisOSRM and @TheMarex please review my PR -
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request parallelizes cucumber tests by moving them from sequential execution within build jobs to a separate matrix of 18 parallel jobs (3 build configs × 2 algorithms × 3 load methods) using GitHub Actions matrix strategy. Build artifacts including binaries, libraries, and test data are uploaded after compilation and downloaded by the test jobs.
Changes:
- Modified the build-matrix job to upload cucumber test artifacts for three specific build configurations
- Added Conan runtime library deployment step for conan builds
- Created a new cucumber-tests job that runs tests in parallel across multiple configurations
- Updated ci-complete job to depend on the new cucumber-tests job
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| CHANGELOG.md | Added entry documenting the parallelization of cucumber tests using GitHub Actions matrix strategy |
| .github/workflows/osrm-backend.yml | Replaced sequential cucumber test execution with parallel matrix job, added artifact upload/download steps, and configured runtime dependencies for test environments |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
This PR should not be merged because:
There is the better previous PR #7309 which:
|
|
Hi @MarcelloPerathoner this PR is not intended to replace your work in #7309. The two pull requests are actually complementary: my PR parallelizes across configurations (different build configs, algorithms, load methods) using GitHub Actions matrix, while yours parallelizes within a single configuration using cucumber's In theory both could be combined - the matrix creates 18 jobs, and each could benefit from your |
708dc12 to
1fb6b97
Compare
Combining #7309 with this PR would only make things slower (and messier). Take this data from an actual debug run and do the math:
After the debug build is done:
And that only if it can get a runner immediately. If you test more than 3 variants you are guaranteed not to get a runner immediately. If you test 15 variants as we currently do, you'll need 90 runners. P.S. #7309 is ready for review. |
- name: Run cucumber tests
run: OSRM_BUILD_DIR=... npx cucumber-js features/ -p ${{ matrix.algorithm }} --parallel 2 |
|
It runs faster only because you are testing 3 variants instead of 15. If you test more than 3 you will starve of runners and nothing is gained. Try testing 15 variants and report your times and we will see. |
85d9c41 to
e9c28ab
Compare
e9c28ab to
0ef40d2
Compare

Issue
Partly fixes #7307
Run cucumber tests in parallel using GitHub Actions matrix.
The matrix creates 18 parallel jobs:
Build artifacts are uploaded after compilation and downloaded by the test jobs. For Conan builds, runtime libraries are deployed using
conan install --deployer=full_deployso they can be included in the artifacts.Tasklist
Requirements / Relations
Link any requirements here. Other pull requests this PR is based on?